﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ESAN.Componentes.DACoreESAN.Models;

namespace ESAN.Componentes.DACoreESAN.Logic.Facade
{
    public class DAConvocatoria
    {

        //Se listan los descuentos de las convocatorias
        static public List<IN_CONVOCATORIA_DESCUENTO> ListarDctoConvocatorias()
        {
            using (var datos = new InscripcionDataContext())
            {
                return datos.IN_CONVOCATORIA_DESCUENTO.ToList();
            }
        }


        //Se listan las convocatorias
        static public List<IN_CONVOCATORIA> ListarConvocatorias()
        {
            using (var datos = new InscripcionDataContext())
            {
                return datos.IN_CONVOCATORIA.ToList();
            }
        }
        //Se obtiene una convocatoria
        static public IN_CONVOCATORIA ObtenerConvocatoria(int ID)
        {
            using (var datos = new InscripcionDataContext())
            {
                return datos.IN_CONVOCATORIA.Where(x => x.Id == ID).FirstOrDefault();
            }
        }

        /// <summary>
        /// Se registra el programa
        /// </summary>
        /// <param name="idConv"></param>
        /// <param name="convocatoria"></param>
        /// <param name="fechaExamen"></param>
        /// <param name="fechaInscripcionInicio"></param>
        /// <param name="fechaInscripcionFinal"></param>
        /// <param name="costoPrograma"></param>
        /// <param name="moneda"></param>
        /// <param name="duracionExamen"></param>
        /// <param name="puntajeMinimo"></param>
        /// <param name="fechaEntrega"></param>
        /// <param name="costoInscripcion"></param>
        /// <returns></returns>
        static public bool RegistrarPrograma(int idConv, string nombreConvocatoria, DateTime fechaExamen,
                                            DateTime fechaInscripcionInicio, DateTime fechaInscripcionFinal,
                                            decimal costoPrograma, string moneda, int duracionExamen,
                                            decimal puntajeMinimo, DateTime fechaEntrega, decimal costoInscripcion)
        {
            bool exito = true;

            try
            {
                IN_CONVOCATORIA convocatoria = new IN_CONVOCATORIA();

                using (var data = new InscripcionDataContext())
                {
                    //Se obtiene el cliente del postulante


                    if (idConv != -1)
                    {
                        //var ID = data.IN_CONVOCATORIA.FirstOrDefault(x => x.Id == idConv).Id;
                        convocatoria = data.IN_CONVOCATORIA.FirstOrDefault(x => x.Id == idConv);
                        convocatoria.Conv_Descripcion = nombreConvocatoria;
                        convocatoria.Conv_FechaExamen = fechaExamen;
                        convocatoria.FechaInicioInscripcion = fechaInscripcionInicio;
                        convocatoria.FechaFinInscripcion = fechaInscripcionFinal;
                        convocatoria.CostoPrograma = costoPrograma;
                        convocatoria.Moneda = moneda;
                        convocatoria.DuracionExamen = duracionExamen.ToString();
                        convocatoria.PuntajeMinimo = (int)puntajeMinimo;
                        convocatoria.FechaDeEntregaResultados = fechaEntrega;
                        convocatoria.CostoInscripcion = costoInscripcion;
                        convocatoria.FechaModificacion = DateTime.Now;


                    }
                    else
                    {
                        convocatoria.Conv_Descripcion = nombreConvocatoria;
                        convocatoria.Conv_FechaExamen = fechaExamen;
                        convocatoria.FechaInicioInscripcion = fechaInscripcionInicio;
                        convocatoria.FechaFinInscripcion = fechaInscripcionFinal;
                        convocatoria.CostoPrograma = costoPrograma;
                        convocatoria.Moneda = moneda;
                        convocatoria.DuracionExamen = duracionExamen.ToString();
                        convocatoria.PuntajeMinimo = (int)puntajeMinimo;
                        convocatoria.FechaDeEntregaResultados = fechaEntrega;
                        convocatoria.CostoInscripcion = costoInscripcion;
                        convocatoria.FechaCreacion = DateTime.Now;

                        data.IN_CONVOCATORIA.InsertOnSubmit(convocatoria);
                    }
                    data.SubmitChanges();
                }
            }
            catch
            {
                exito = false;

            }

            return exito;
        }

        static public bool EliminarPrograma(int ID)
        {
            bool exito = true;
            try
            {
                using (var data = new InscripcionDataContext())
                {
                    IN_CONVOCATORIA conv = data.IN_CONVOCATORIA.Where(x => x.Id == ID).FirstOrDefault();
                    data.IN_CONVOCATORIA.DeleteOnSubmit(conv);
                    data.SubmitChanges();

                }
            }
            catch
            {

                exito = false;
            }

            return exito;


        }




    }
}
